/*
 * @Autor: taobo
 * @Date: 2020-06-08 18:12:23
 * @LastEditTime: 2020-06-08 19:23:24
 */ 
//小Q想要给他的朋友发送一个神秘字符串，但是他发现字符串的过于长了，于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩，
//对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100)，
//例如字符串ABCABCABC将会被压缩为[3|ABC]，现在小Q的同学收到了小Q发送过来的字符串，你能帮助他进行解压缩么？ 
//HG[3|B[2|CA]]F ---> HGBCACABCACABCACAF
#include <iostream>
#include <vector>
#include <string>
#include <stack>
using namespace std;

class decode{
public:
    string operator()(string& str){
        //遇到左括号将当前字符串入栈，遇到右括号时先出栈一个数字然后完成解码操作，并将上一轮入栈的字符串取出然后拼接为新的串
        stack<string> str_st;
        stack<int> num_st;
        string ans;
        for(char& val:str){
            if(val == '['){
                str_st.push(ans);
                ans.clear();
            }else if(val == '|'){
                int n = std::stoi(ans);
                num_st.push(n);
                ans.clear();
            }else if(val == ']'){
                int freq = num_st.top();
                num_st.pop();
                string tmp;
                for(int i=0;i<freq;++i)
                    tmp += ans;
                ans = str_st.top() + tmp;
                str_st.pop();
            }else{
                ans += val;
            }
        }
        return ans;
    }
};

int main()
{
    //string str("HG[3|B[2|CA]]F");
    string str;
    cin >> str;
    decode obj;
    string ans = obj(str);
    cout << ans << endl;
    return 0;
}